package com.telcordia.cvas.rpn;

import java.util.concurrent.ConcurrentHashMap;

public class OperatorFactory {
	ConcurrentHashMap<String, Operator> operators = new ConcurrentHashMap<String, Operator>();

	public OperatorFactory() {
		operators.put("+", new Add());
		operators.put("-", new Subtract());
		operators.put("/", new Divide());
		operators.put("*", new Multiply());
		operators.put("!", new Factorial());
	}

	public Operator findOperatorNamed(String operatorName) {
		Operator op = operators.get(operatorName);

		if (op == null)
			throw new RuntimeException(String.format("%s not registered"),
					operatorName);

		return op;
	}
}
